b231ac836b6ae6e4eaa6f1b20d3af86f0d49a52e,compilers/official-network-plugins/src/main/java/org/thingml/networkplugins/js/JSKevoreePlugin.java,JSKevoreePlugin,generateKevoreeListener,#StringBuilder#Context#boolean#Property#Instance#boolean#String#,478

Before Change


        if (!isGlobal) //per instance mapping
            builder.append("this." + i.getName() + "." + ctx.getVariableName(p) + " = this.dictionary." + accessor + "('" + i.getName() + "_" + ctx.getVariableName(p) + "');");
        else
            builder.append("this." + i.getName() + "." + ctx.getVariableName(p) + " = this.dictionary." + accessor + "('" + ctx.getVariableName(p) + "');");
    }

    private void generateThingMLListener(StringBuilder builder, Context ctx, Property p, Instance i, String accessor, boolean isGlobal) {

After Change


        }
    }

    private void generateKevoreeListener(StringBuilder builder, Context ctx, boolean isNumber, Property p, Instance i, boolean isGlobal, String accessor) {
        //Update ThingML properties when Kevoree properties are updated
        if (!isGlobal) //per instance mapping
            builder.append("this.dictionary.on('" + i.getName() + "_" + ctx.getVariableName(p) + "', function (newValue) {");
        else
            builder.append("this.dictionary.on('" + ctx.getVariableName(p) + "', function (newValue) {");
        if (isNumber) {
            builder.append("newValue = Number(newValue);\n");
        }
        /*if (!isGlobal) {//per instance mapping
            builder.append("console.log(\"Kevoree attribute " + i.getName() + "_" + ctx.getVariableName(p) + " updated...\");\n");
        } else {
            builder.append("console.log(\"Kevoree attribute " + ctx.getVariableName(p) + " updated...\");\n");
        }*/
        //builder.append("if(this." + i.getName() + "." + ctx.getVariableName(p) + " !== newValue) { ");
        //builder.append("console.log(\"updating ThingML attribute...\");\n");

        if(!((JSCompiler)ctx.getCompiler()).multiThreaded) {
            builder.append("this." + i.getName() + "." + ctx.getVariableName(p) + " = newValue;");
        } else {
            builder.append("this." + i.getName() + ".send({lc: 'set', property: '" + p.getName() + "', value: newValue});");
        }
        //builder.append("}");
        builder.append("});\n");

        //Force update on startup, as listeners might be registered too late the first time
        if(!((JSCompiler)ctx.getCompiler()).multiThreaded) {
            builder.append("this." + i.getName() + "." + ctx.getVariableName(p) + " = ");
        } else {
            builder.append("this." + i.getName() + ".send({lc: 'set', property: '" + p.getName() + "', value: ");
        }
        if (!isGlobal) //per instance mapping
            builder.append("this.dictionary." + accessor + "('" + i.getName() + "_" + ctx.getVariableName(p) + "')");
        else
            builder.append("this.dictionary." + accessor + "('" + ctx.getVariableName(p) + "')");
        if(((JSCompiler)ctx.getCompiler()).multiThreaded) {